package com.tarena.lbs.business.dao.repository.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageInfo;
import com.tarena.lbs.business.dao.mapper.StoreChainMapper;
import com.tarena.lbs.business.dao.repository.StoreChainRepository;
import com.tarena.lbs.business.pojo.po.StoreChainPO;
import com.tarena.lbs.business.pojo.query.StoreChainQuery;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;

@Slf4j
@Repository
public class StoreChainRepositoryImpl implements StoreChainRepository {
    @Autowired
    private StoreChainMapper storeChainMapper;
    @Override
    public void saveStoreChain(StoreChainPO po) {
        log.debug("保存店铺连锁信息，入参：{}", po);
        storeChainMapper.insert(po);
    }

    @Override
    public PageInfo<StoreChainPO> pageList(StoreChainQuery query) {
        log.debug("分页查询店铺连锁信息，入参：{}", query);

        // 组装查询条件
        QueryWrapper<StoreChainPO> queryWrapper = new QueryWrapper<>();

        // 按商家ID筛选
        if (query.getBusinessId() != null) {
            queryWrapper.eq("business_id", query.getBusinessId());
        }

        // 按店铺ID筛选
        if (query.getStoreId() != null) {
            queryWrapper.eq("store_id", query.getStoreId());
        }

        // 按链接状态筛选
        if (query.getLinkStatus() != null) {
            queryWrapper.eq("link_status", query.getLinkStatus());
        }

        // 执行查询
        List<StoreChainPO> pos = storeChainMapper.selectList(queryWrapper);
        return new PageInfo<>(pos);
    }

    @Override
    public void updateStatus(Integer id, Integer linkStatus) {
        log.debug("更新二维码状态，id: {}, linkStatus: {}", id, linkStatus);
        // 使用UpdateWrapper来直接更新特定字段
        UpdateWrapper<StoreChainPO> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id", id);
        updateWrapper.set("link_status", linkStatus);
        storeChainMapper.update(null, updateWrapper);
    }
}

